package com.fanghaoran.notes.service;

import com.fanghaoran.notes.bean.MyResult;
import com.fanghaoran.notes.entity.Item;
import com.fanghaoran.notes.entity.Orders;

import java.sql.SQLException;

/**
 * @Author: win11
 * @Date: 2023/04/23/9:56
 * @Description: 订单service层
 */
public interface OrderService {

    /**
     * 插入订单
     * @param order 订单数据
     * @return 返回插入结果
     * @throws SQLException 异常
     */
    MyResult addOrder(Orders order) throws SQLException;

    /**
     * 插入订单项
     * @param item 订单项数据
     * @return 返回插入结果
     * @throws SQLException 异常
     */
    MyResult addItem(Item item) throws SQLException;

    /**
     * 展示订单 某个用户的
     * @param uId 用户id
     * @return 返回展示结果
     * @throws Exception 异常
     */
    MyResult showOrder(Integer uId) throws Exception;

    /**
     * 展示订单详情
     * @param oId 订单编号
     * @return 返回查询结果
     * @throws Exception 异常
     */
    MyResult showOrderDetail(String oId) throws Exception;

    /**
     * 修改订单状态
     * @param oId 订单编号
     * @param oState 订单状态
     * @return 返回修改结果
     * @throws Exception 异常
     */
    MyResult modifyState(String oId,int oState) throws Exception;

    /**
     * 展示某个商家的商品售卖情况
     * @param uId 商家id
     * @return 返回展示结果
     * @throws Exception 异常
     */
    MyResult showSellDetail(Integer uId) throws Exception;

    /**
     * 展示退款信息
     * @param iid 订单项id
     * @return 返回展示结果
     * @throws Exception 异常
     */
    MyResult showRefund(int iid) throws Exception;

    /**
     * 添加退款信息
     * @param iid 订单项id
     * @param reason 退款原因
     * @param state 退款状态
     * @param uId 退款人id
     * @return 返回添加结果
     * @throws SQLException 异常
     */
    MyResult addRefund(int iid, String reason, int state, int uId) throws SQLException;

    /**
     * 展示某个商家所有商品的退款信息(给商家看的)
     * @param uId 商家id
     * @return 返回展示结果
     * @throws Exception 异常
     */
    MyResult showRefundForSeller(int uId) throws Exception;

    /**
     * 修改退款状态
     * @param iid 订单项id
     * @param state 退款状态
     * @return 返回修改结果
     * @throws SQLException 异常
     */
    MyResult modifyRefundState(int iid, int state) throws SQLException;
}
